#ifndef STACK_H
#define STACK_H

#include "config.h"

typedef struct Data{
    void* data;
} Data;

typedef struct Stack{
    Data *elements;
    int top;
    int size;
    int capacity;
} Stack;

void init_stack(Stack *s);
int get_stack_size(Stack *s);
int is_stack_empty(Stack *s);
void stack_push(Stack *s, void *data);
void* stack_pop(Stack *s);
void *stack_peek(Stack *s);
void free_stack(Stack *s);

#endif